/**
 * Any 与 Unknown
 *
 *    两者都是 TS 中顶级类型。所有类型的值都可以赋值给他们【因为会直接告诉TS不做类型检查】
 *
 *
 *    1. Any 类型可以接受任意类型的值, Unknown 类型也是
 *    2. Any 类型的值也可以赋值给任意类型, Unknown 类型的值只能赋值给 Any 或 Unknown
 *
 *    3. Unknown 类型是 Ts 3.0 版本引入的
 *    4. Unknown 类型是类型安全的 Any
 *
 *
 * noImplicitAny 配置
 *    是否允许隐式的 any 类型
 *    noImplicitAny: true, 不允许
 *    noImplicitAny: false, 允许
 *
 */

// // 声明一个 any 类型的变量
// let notSure: any = 4;
// // 可以给它赋值为 其他任何类型
// notSure = "maybe it is a string"; // OK
// notSure = true; // OK
// // 调用它不存在的属性or方法
// notSure.myName; // Ok
// notSure.getName(); // OK
// // 将它赋值给任意类型的
// let num: string = notSure; // OK

// 声明一个 unknown 类型的变量
let notSure: unknown = 4;
// 可以给它赋值为 其他任何类型
notSure = "maybe it is a string"; // OK
notSure = true; // OK
// 调用它不存在的属性or方法
notSure.myName; // No
notSure.getName(); // No
// 将它赋值给任意类型的
let num: any = notSure; // OK

function fn1(name) {
  console.log("name", name);
}
